"""
@version:python3
@author:大橘为重
@file:QTableView.py
@time:2022/3/2 16:21
"""



'''
数据源 -> Model

需要创建QTableView实例和一个数据源（Model），然后将两者关联
MVC : Model  Viewer  Controller
MVC的目的是将后端的数据和前端页面的耦合度降低


'''
# 0、导入需要的包和模块
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QTableView")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self): # 添加子控件以及子控件的配置操作

        self.model = QStandardItemModel(4,3)
        self.model.setHorizontalHeaderLabels(["id","name","age"])

        self.table = QTableView(self)
        self.table.setModel(self.model)

        # 添加数据源
        item11 = QStandardItem("01")
        item12 = QStandardItem("雷神")
        item13 = QStandardItem("2000")
        self.model.setItem(0,0,item11)
        self.model.setItem(0,1,item12)
        self.model.setItem(0,2,item13)

        item31 = QStandardItem("03")
        item32 = QStandardItem("火神")
        item33 = QStandardItem("5000")
        self.model.setItem(2, 0, item31)
        self.model.setItem(2, 1, item32)
        self.model.setItem(2, 2, item33)

        layout = QVBoxLayout()
        layout.addWidget(self.table)
        self.setLayout(layout)


        

# 1、创建一个应用程序对象
app = QApplication(sys.argv)

# 2、控件操作
# 创建控件、设置控件、事件和信号的处理
# 2.1 创建控件
window = Window()
# 2.2 设置控件


# 2.3 展示控件
window.show()

# 3、应用程序的执行，进入到消息循环
sys.exit(app.exec_())